/**
 * Copyright (C) 2013 DaiKit.com - daikit4gxt module (admin@daikit.com)
 *
 *         Project home : http://code.daikit.com/daikit4gxt
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// $Id$
package com.daikit.daikit4gxt.client.ui.cell;

import com.daikit.commons.shared.utils.DkStringUtils;
import com.google.gwt.cell.client.AbstractCell;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;


/**
 * @author tcaselli
 * @version $Revision$ Last modifier: $Author$ Last commit: $Date$
 * @param <COLUMN_TYPE>
 *           the column type
 */
public abstract class DkNullSafeCell<COLUMN_TYPE> extends AbstractCell<COLUMN_TYPE>
{

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.google.gwt.cell.client.AbstractCell#render(com.google.gwt.cell.client.Cell.Context, java.lang.Object,
	 * com.google.gwt.safehtml.shared.SafeHtmlBuilder)
	 */
	@Override
	public void render(final com.google.gwt.cell.client.Cell.Context context, final COLUMN_TYPE value, final SafeHtmlBuilder sb)
	{
		if (value != null)
		{
			final String valueAsString = toString(value);
			if (DkStringUtils.hasText(valueAsString))
			{
				sb.appendHtmlConstant(valueAsString);
			}
		}
	}

	protected abstract String toString(final COLUMN_TYPE value);

}
